#include<bits/stdc++.h>
#include<vector>
using namespace std;
// void solution(){
//     string s;
//     cin>>s;
//     if(s=="red")printf("SSS");
//     else if(s=="blue")printf("FFF");
//     else if(s=="green")printf("MMM");
//     else printf("Unknown");
// }
// void solution(){
//     int xmax=0;
//     int ymax=0;
//     int xmin=INT_MAX;
//     int ymin=INT_MAX;
//     int n;
//     cin>>n;
//     for(int i=0;i<n;i++){
//         int x,y;
//         cin>>x>>y;
//         if(x>xmax)xmax=x;
//         if(y>ymax)ymax=y;
//         if(x<xmin)xmin=x;
//         if(y<ymin)ymin=y;
//     }
//     int number=max(xmax-xmin,ymax-ymin);
//     if(number%2==0){
//         cout<<number/2;
//     }
//     else{
//         cout<<number/2+1;
//     }
// }
//     }
// }
vector<bool>bl(1e5+10,false);
void sw(int i,int j){
    for(int n=i-1;n<j;n++){
        if(bl[n]==false)bl[n]=true;
        else{
            bl[n]=false;
        }
    }
}
// std::string getSubstring(const std::string str, size_t start, size_t end) {
    
//     string s(str.begin() + start, str.begin() + end + 1);
   
//     // 直接使用string的迭代器构造子串
//     return s;
// }
void solution(){
    string s;
    string t;
    int n,m;
    cin>>n>>m;
    cin>>s>>t;
    for(int i=0;i<m;i++){
        int num1,num2;
        scanf("%d %d",&num1,&num2);
        // string s1=getSubstring(s,num1,num2);
        // string s2=getSubstring(t,num1,num2);
        // s.replace(num1,num2,s2);
        // t.replace(num1,num2,s1);
        sw(num1,num2);
    }
    for(auto i=0;i<s.size();i++){
        if(bl[i])s[i]=t[i];
    }
    cout<<s;
}
int main(){
    solution();
    return 0;
}

